GH-33592: [C++] support casting nullable fields to non-nullable if there are no null values#43782
Conversation
|
Thanks for opening a pull request! If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project. Then could you also rename the pull request title in the following format? or In the case of PARQUET issues on JIRA the title also supports: See also: |
|
|
52100dd to
49d5a99
Compare
|
This PR looks pretty good to me, what additional help would you like getting it merged? |
|
Thanks for the help! I'm a random contributor, so I'm not sure about the exact workflow, but I think both getting the CI run approved and having a C++ owner approve it are needed. Any more detailed thoughts on if the tests are adequate, if there's anywhere else in the code base that you think needs to change, my handling of the go implementation by just deleting the shortcircuit, or any other more detailed thoughts? Basically anything that would reduce the mental load on the code owner I think would increase the odds they approve it :) |
|
You can mark as ready for review? Or this is still wip? |
|
Oops, didn't mean for this to still be marked WIP. Looks like a few failures that need to get fixed, but still a high-level review of the general approach would still be appreciated in the meantime. |
|
You probably need the same corresponding check on the Go side to verify that it's only allowed if there are no nulls. Also, the Go implementation has been moved to the apache/arrow-go repository. So please file the PR there for the Go side. Sorry for the confusion, we just haven't removed the Go code from here yet. |
|
Thanks @zeroshade , will do. Do we need both PRs to land at about the same time, or can I do that independently? I will undo my changes to the go code here, leaving it untouched. |
|
They can land independently, no issues there. Thanks! |
49d5a99 to
eb9e7b6
Compare
|
Just pushed a new version:
We will see if this passes CI now... |
eb9e7b6 to
e6d54d3
Compare
|
Pushed a new version, hopefully that fixed the broken tests:
|
|
@zeroshade I think this is ready to review/merge, the failing CI runs look like flakes when trying to setup the environment? |
|
Can we move this to apache/arrow-go? |
|
Ah, the Go part was removed from this PR. |
e6d54d3 to
106e627
Compare
b124c64 to
ebe9a5a
Compare
|
@mapleFU as I added the slicing tests, I also refactored the tests to make them much more consistent and concise. Take another look and make sure that your "LGTM" still holds after those changes. |
ce00550 to
ea241a5
Compare
|
I'm getting these failing UBSAN errors in CI. See below for the relevant logs. Is it because of the new Details |
|
Well, the Windows 2019 CI test shows a similar error, so I think it needs diagnosing and solving: |
45f1ac2 to
0959343
Compare
|
I rebased on top of #45500 so that hopefully CI will pass |
0959343 to
4311938
Compare
pitrou
left a comment
There was a problem hiding this comment.
+1. Thanks for this @NickCrews !
|
@github-actions crossbow submit -g cpp |
|
Revision: 4311938 Submitted crossbow builds: ursacomputing/crossbow @ actions-f1ea7df869 |
|
The CI failures are unrelated (see #45524). |
|
Thank you everyone! That was a lot of effort everyone did, I wouldn't have been able to do that without all the help. I'm excited for this to be released which will allow me to remove some hacky workarounds I have in my app code. |
|
After merging your PR, Conbench analyzed the 4 benchmarking runs that have been run so far on merge-commit 6a47e4d. There were no benchmark performance regressions. 🎉 The full Conbench report has more details. It also includes information about 6 possible false positives for unstable benchmarks that are known to sometimes produce them. |
Notes for myself/fixer:
cmake .. --preset ninja-debug-basic, thencmake --build . && PYTHON=python ctest -R 'arrow-compute-scalar-cast-test' --output-on-failureto run the specific testuvx pre-commit run --all-files clang-format